package com.zmn.oms.dubbo.interfaces.zmn.master.part;

import com.zmn.common.dto2.ResponseDTO;
import com.zmn.oms.dubbo.dto.common.express.ExpressCompanyDRO;
import com.zmn.oms.dubbo.dto.common.part.ApplyFactoryPartCheckDRO;
import com.zmn.oms.dubbo.dto.common.part.FactoryPartDRO;
import com.zmn.oms.dubbo.dto.common.part.FactoryPartPostCheckDRO;
import com.zmn.oms.dubbo.dto.common.part.FactoryPartPostDIO;
import com.zmn.oms.dubbo.dto.common.work.*;
import com.zmn.oms.dubbo.dto.zmn.part.fcpart.FcOrderPartRespDRO;

import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * 类描述：工程师配件
 *
 * @author heciqi
 * @date 2020/03/27 11:00
 */
public interface MasterPartRemoteService {

	/**
	 * 标记为使用配件
	 * @param usePartDIO
	 */
	ResponseDTO modifyUsePart(BaseRequestDIO usePartDIO);

	/**
	 * 工程师用配件
	 * @param usePartDIO
	 */
	ResponseDTO<WorkDetailDRO> modifyPart(UsePartDIO usePartDIO);

	/**
	 * 工程师取消配件
	 * @param cancelPartDIO
	 */
	ResponseDTO<WorkDetailDRO> cancelPart(CancelPartDIO cancelPartDIO);

	/**
	 * 工程师申请厂家配件
	 * @param orderFactoryPartDIO
	 */
	ResponseDTO applyFactoryPart(OrderFactoryPartDIO orderFactoryPartDIO);

	/**
	 * 工程师获取需要返厂的配件
	 * @param baseRequestDIO
	 * @return
	 */
	ResponseDTO<List<FactoryPartDRO>> listToPostReturnFcPart(BaseRequestDIO baseRequestDIO);

	/**
	 * 邮寄配件（旧件返厂）
	 * @param factoryPartPostDIO
	 * @see
	 * @return
	 */
	ResponseDTO<FactoryPartPostCheckDRO> postReturnFcPart(FactoryPartPostDIO factoryPartPostDIO);

	/**
	 * 获取配件物流信息
	 * @param baseRequestDIO
	 * @return
	 */
	ResponseDTO<FcOrderPartRespDRO> getExpressParts(BaseRequestDIO baseRequestDIO);

	/**
	 * 通过ID查询配件物流信息，用于修改快递记录
	 * @param fcOrderPartId
	 * @return
	 */
	ResponseDTO<FactoryPartDRO> getExpressPartById(Integer fcOrderPartId);

	/**
	 * 获取快递公司
	 * @return
	 */
	ResponseDTO<List<ExpressCompanyDRO>> listExpressesCompany();

	/**
	 * 申请厂商配件操作检查
	 * @param baseRequestDIO
	 * @return
	 */
	ResponseDTO<ApplyFactoryPartCheckDRO> applyFactoryPartCheck(BaseRequestDIO baseRequestDIO);

	/**
	 * 保留配件申请24小时
	 * @param retain24hourPartDIO
	 * @return
	 */
	ResponseDTO<Boolean> retain24hoursParts(@NotNull(message = "入参不能为空") Retain24hourPartDIO retain24hourPartDIO);

}
